int speed = 2; /* Wave Drive ************************************************************************************ |--|--|--|--|--|--|--|--|--|--|--| 1 ---| |---| 0 |-----------| |------------ Coil 1 - Pin A 1 |---| |---| 0 ---| |-----------| |-------- Coil 2 - Pin A 1 |---| |---| 0 -------| |-----------| |---- Coil 1 - Pin B 1 |---| |---| 0 -----------| |-----------| | Coil 2 - Pin B *********************************************************************************** */ void step_wave(int num_steps, int direction){ number_of_loops = 0; while(number_of_loops < num_steps){ if(direction == 0) { if(step_pos == 0) { LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 0; } } if(direction == 1) { if(step_pos == 0) { LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 0; } } Delay10KTCYx(speed); number_of_loops++; } } /* Full Step Drive ************************************************************************************ |--|--|--|--|--|--|--|--|--|--|--| 1 -----| |-----| |-----| 0 |-----| |-----| |-- Coil 1 - Pin A 1 |-----| |-----| |----- 0 --| |-----| |-----| Coil 2 - Pin A 1 |-----| |-----| |-- 0 -----| |-----| |-----| Coil 1 - Pin B 1 --| |-----| |-----| 0 |-----| |-----| |----- Coil 2 - Pin B *********************************************************************************** */ void step_full(int num_steps, int direction){ number_of_loops = 0; while(number_of_loops < num_steps){ if(direction == 0) { if(step_pos == 0) { LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 1; step_pos = 0; } } if(direction == 1) { if(step_pos == 0) { LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 1; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 0; } } Delay10KTCYx(speed); number_of_loops++; } } /* Half Step Drive ************************************************************************************ |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--| 1 --------| |--------| |----- 0 |--------------| |--------------| Coil 1 - Pin A 1 |--------| |--------| 0 -----| |--------------| |-------------- Coil 2 - Pin A 1 |--------| |--------| 0 -----------| |--------------| |-------- Coil 1 - Pin B 1 --| |--------| |--------| 0 |--------------| |--------------| |-- Coil 2 - Pin B *********************************************************************************** */ void step_half(int num_steps, int direction){ number_of_loops = 0; while(number_of_loops < num_steps){ if(direction == 0) { if(step_pos == 0) { LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 4; } else if(step_pos == 4){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 5; } else if(step_pos == 5){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 6; } else if(step_pos == 6){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 1; step_pos = 7; } else if(step_pos == 7){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 0; } } if(direction == 1) { if(step_pos == 0) { LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 1; } else if(step_pos == 1){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 1; step_pos = 2; } else if(step_pos == 2){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 0; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 3; } else if(step_pos == 3){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 1; LATCbits.LATC7 = 0; step_pos = 4; } else if(step_pos == 4){ LATDbits.LATD2 = 0; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 5; } else if(step_pos == 5){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 1; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 6; } else if(step_pos == 6){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 0; step_pos = 7; } else if(step_pos == 7){ LATDbits.LATD2 = 1; LATDbits.LATD3 = 0; LATCbits.LATC6 = 0; LATCbits.LATC7 = 1; step_pos = 0; } } Delay10KTCYx(speed); number_of_loops++; } }